package com.jlpay.open.jlpay.sdk.java.model.marketing.request;

import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.jlpay.open.jlpay.sdk.java.model.OrgBaseReq;
import lombok.*;

import java.util.List;

/**
 * 商户活动修改请求体
 * 
 * @author system
 * @since 2024/12/19
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class MerchantActivityUpdateRequest extends OrgBaseReq {

    /**
     * 活动ID
     * 活动id
     */
    private String actId;

    /**
     * 商户号
     * 商户号
     */
    private String merchNo;

    /**
     * 商户状态
     * remove：移除 join：参与
     */
    private String status;

    /**
     * 商户活动开始时间
     * 格式yyyy-MM-dd HH:mm:ss 商户活动开始时间，开始时间不能早于活动ID的开始时间。不填则取活动的开始时间。商户活动开始后不能修改商户活动开始时间。
     */
    private String startTime;

    /**
     * 商户活动结束时间
     * 格式yyyy-MM-dd HH:mm:ss 商户活动结束时间，结束时间不能晚于活动ID的结束时间。不填则取活动的结束时间。商户活动开始后可以修改商户活动结束时间，结束时间不能早于当前时间且不能晚于活动结束时间。
     */
    private String endTime;

    /**
     * 商户额度信息
     * 单独为商户配置活动额度，sort_value为计费类型数组字符串，update_total为最新的额度值，单位分
     * 具体的计费类型数组字符串，需要和活动配置的计费类型规则完全一致
     * 商户额度只能高于活动配置的额度，不能低于活动配置的额度
     * 示例值：[{"sort_value":"[\"01\",\"02\"]","update_total":"1001"},{"sort_value":"[\"30\",\"31\"]","update_total":"1001"}]
     */
    private List<MerchantQuotaInfo> updateQuotas;

    @Override
    public String path() {
        return "/open/org/bank/act-bridge/act-merch-relation/update";
    }
} 